package tp1.arbolBmas.nodo;

import tp1.arbolBmas.nodo.dato.Dato;

public abstract class NodoConHijos extends Nodo 
{
	private Nodo hijoIzquierdo;
	private Nodo hijoDerecho;
	
	public NodoConHijos() 
	{
		super();
		hijoIzquierdo = null;
		hijoDerecho   = null;
	}
	
	public NodoConHijos(Tipo tipo,Clave clave, Dato dato,Nodo hijoIzquierdo, Nodo hijoDerecho, Nodo padre ) 
	{
		super(tipo, clave, dato, padre);
		this.hijoIzquierdo = hijoIzquierdo;
		this.hijoDerecho = hijoDerecho;
	}

	public Nodo getHijoIzquierdo() {
		return hijoIzquierdo;
	}

	public void setHijoIzquierdo(Nodo hijoIzquierdo) {
		this.hijoIzquierdo = hijoIzquierdo;
	}

	public Nodo getHijoDerecho() {
		return hijoDerecho;
	}

	public void setHijoDerecho(Nodo hijoDerecho) {
		this.hijoDerecho = hijoDerecho;
	}

	// METODOS
	
	
	
	
	public String toString()
	{
		StringBuilder sb = new StringBuilder();
		
		sb.append("[NodoConHijos: clave=").append(clave)
		  .append(",dato=").append(dato).append(" | ");
		
		if( hijoIzquierdo != null)
		  sb.append("HijoIzq=(clave=").append(hijoIzquierdo.getClave()).append(")");
		else
    	  sb.append("HijoIzq=NULL");
		
		sb.append(" | ");
		
		if(hijoDerecho != null )
		  sb.append("HijoDer=(clave=").append(hijoDerecho.getClave()).append(") ]");
		else
		  sb.append("HijoDer=NULL ]");	
		
		return sb.toString();
	}
}
